Technote 1020

Color Cursing: Two Major Causes


ñ⁄éü

ÉJÉâÅ[ÉJÅ[É\ÉãÇégǧ
ÉJÉâÅ[ÉJÅ[É\ÉãÇÃçÏê¨Ç‚égópï˚ñ@ÇÕInside Macintosh: Imaging with QuickDrawÇÃëÊ8èÕÅuCursor UtilitiesÅvDžǃâê‡Ç≥ÇÍǃǢNjÇ∑ÅB

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÉJÉâÅ[ÉJÅ[É\ÉãÇóòópÇ∑ÇÈèÍçáÇÕÉJÉâÅ[QuickDrawÇÃÇ¢Ç≠ǬǩÇÃêßå¿Ç…ìÀÇ´ìñÇΩÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅBDZÇÃÉeÉbÉNÉmÅ[ÉgÇ≈ÇÕÅAÇÊÇ≠å©ÇÁÇÍÇÈñ‚ëËì_ÇÃçUó™ï˚ñ@Çâê‡ÇµÇ‹Ç∑ÅB


DZÇÃÉeÉbÉNÉmÅ[ÉgÇÃïœçXåoó

DZÇÃÉeÉbÉNÉmÅ[ÉgÇÕ1989îN6åéÇ…ÉäÉäÅ[ÉXÇ≥ÇÍNjǵÇΩÅB
'clut'ÉäÉ\Å[ÉXÇÃíçà”éñçÄÇÕ1996îN2åéÇ…í«â¡Ç≥ÇÍNjǵÇΩÅB
SetCCursor ()Ç™GDeviceÇïœçXÇ∑ÇÈDZÇΔÇ‚ÅAÉÅÉÇÉäÇìÆÇ©Ç∑DZÇΔDžǬǢǃÇÃíçà”éñçÄÇÕ1997îN12åéÇ…í«â¡Ç≥ÇÍNjǵÇΩÅB

ÉJÉâÅ[ÉJÅ[É\ÉãÇégǧ

ÉJÉâÅ[ÉJÅ[É\ÉãÇóòópÇ∑ÇÈç€Ç…ÉVÉXÉeÉÄÉGÉâÅ[Ç‚ÉNÉâÉbÉVÉÖÇà¯Ç´ãNDZÇ≥ǻǢÇΩÇflDžLJÅAÉAÉvÉäÉPÅ[ÉVÉáÉìäJî≠ÇÕà»â∫ÇÃì_Ç…íçà”ǵǃêiÇflǃâ∫Ç≥Ç¢ÅB

ÉJÅ[É\ÉãÇÃòg

ó·Ç¶ÇŒÅAècâ°15 x 9ÉsÉNÉZÉãÇÃÉJÅ[É\ÉãǙdžÇÍÇŒÅAÉJÅ[É\ÉãÇÃÉoÉEÉìÉhògÅibounds.bottomÇΔbounds.rightÅjÇÕè„ãLÇÃílÇ…ÇµÇ™ÇøÇ≈Ç∑Ç™ÅAè„ãLÇÃÇÊǧǻílÇÕê‚ëŒÇ…égÇÌǻǢÇ≈â∫Ç≥Ç¢ÅBDZÇÃÉJÅ[É\ÉãÇÃÉrÉbÉgÉ}ÉbÉvÇ™ägí£Ç≥ÇÍÇÈèÍçáÅió·Ç¶ÇŒÅA2ÉrÉbÉgÉJÉâÅ[Ç≈ç\ê¨Ç≥ÇÍǃǢÇÈÉJÅ[É\ÉãÇ™8ÉrÉbÉgÉJÉâÅ[ÇÃâÊñ Ç…ìWäJÇ≥ÇÍÇΩèÍçáÅjÅASetCursor ()ÇÃéléÃå‹ì¸åvéZÇÃÇΩÇflÅAÉrÉbÉgÉ}ÉbÉvÇÃâ°ïùÇÕ8ÉsÉNÉZÉãï™ÇµÇ©äÑÇËìñǃÇÁÇÍÇ‹ÇπÇÒÅBägí£Ç≥ÇÍÇΩÉrÉbÉgÉ}ÉbÉvÇÃàÏÇÍÇΩïîï™ÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇ…èëÇ´çûÇ‹ÇÍǃǵNjǢNjÇ∑ÅB

DZÇÃñ‚ëËÇÇ≥ÇØÇÈÇΩÇflÇ…ÇÕpixmapHandle^^.boundsÇècâ°16 x 16Ç…å≈íËǵǃâ∫Ç≥Ç¢ÅBDZǧÇ∑ÇÈDZÇΔÇ…ÇÊǡǃÅASetCursor ()ÇÕÉJÅ[É\ÉãÇÃÉrÉbÉgÉ}ÉbÉvÇê≥ǵÇ≠ägí£ÇµÇ‹Ç∑ÅBÇ‹ÇΩÅAé¿ç€Ç…ï`âÊÇ≥ÇÍÇÈÉfÅ[É^ÇÃó ÇÕÉJÅ[É\ÉãÇÃÉsÉNÉZÉãÇÃílÇ‚'clut'ÉäÉ\Å[ÉXÇ…àÀë∂ǵNjÇ∑ÇÃÇ≈ÅAògÇ16 x 16ÇÊÇËè¨Ç≥Ç≠ǵǃêîÉoÉCÉgâ“Ç≤ǧÇΔǵǃLJå¯â ÇÕÇŸÇΔÇÒǫdžÇËÇ‹ÇπÇÒÅB

ê‹ÇÃà´Ç¢'clut'ÉäÉ\Å[ÉXÇÃÉpÅ[ÉW

ÉJÉâÅ[ÉJÅ[É\ÉãÇÃÉJÉâÅ[ÉeÅ[ÉuÉãÇGetCTable ()Ç≈'clut'ÉäÉ\Å[ÉXÇ©ÇÁì«Ç›çûÇfièÍçáÅAÉJÉâÅ[ÉJÅ[É\ÉãégópíÜÇÕ'clut'Ç™purgeableÇ≈ÇÕǻǢDZÇΔÇämîFǵǃâ∫Ç≥Ç¢ÅBê‹ÇÃà´Ç¢É^ÉCÉ~ÉìÉOÇ≈'clut'Ç™ÉpÅ[ÉWÇ≥ÇÍÇÈÇΔÅAÉVÉXÉeÉÄÇÕÉNÉâÉbÉVÉÖǵNjÇ∑ÅB

è⁄ǵÇ≠ÇÕInside Macintosh: Imaging with QuickDrawÅuCursor UtilitiesÅvÇÇ≤óóâ∫Ç≥Ç¢ÅB

SetCCursor ()ÇÕGDeviceÇïœçXÇ∑ÇÈDZÇΔǙdžÇËÇ‹Ç∑

ÉVÉXÉeÉÄÉ\ÉtÉgÉEÉFÉAÉoÅ[ÉWÉáÉì7.5.2à»ç~Ç≈ÇÕÅAÉJÅ[É\ÉãÇÃÉrÉbÉgÉ}ÉbÉvÇÕCopyBits ()ÇégǡǃÉIÉtÉXÉNÉäÅ[ÉìÇÃGWorldÇ≈çÏê¨Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃÇΩÇflÅASetCCursor ()ÇÕà»â∫ÇÃÇÊǧǻàÍî ìIÇ»ÉRÅ[ÉhÇ≈åªç›ÇÃÉ|Å[ÉgÇΔÉfÉoÉCÉXÇï€ë∂ǵNjÇ∑ÅB

{
	GetGWorld (&savePort, &saveDevice);
	SetGWorld (offPort, NULL);

	... CopyBits ()ǻǫÇÃǪÇÃëºÇÃÉRÅ[Éh

	SetGWorld (savePort, saveDevice);
}


SetGWorld ()ÇÃïõçÏópÇΔǵǃÅAGWorldÉ|Å[ÉgÇìnǵÇΩèÍçáÅAÉfÉoÉCÉXÉpÉâÉÅÅ[É^ÇÕñ≥éãÇ≥ÇÍÇ‹Ç∑ÅBåªç›ÇÃÉ|Å[ÉgÇ™GWorldÉ|Å[ÉgÇÃèÍçáÅASetCCursor ()ÇåƒÇ—èoǵÇΩåãâ ÇΔǵǃÅAÉfÉoÉCÉXÇ™GWorldÇÃÉfÉoÉCÉXÇΔÇ»ÇËÇ‹Ç∑ÅB

É|Å[ÉgÇ™GWorldÉ|Å[ÉgÇΔǻǡǃǢÇÈèÛë‘ÇÃéûÇ…SetCCursor ()ÇåƒÇ—èoÇ∑ÇΔà»â∫ÇÃÇÊǧǻäÎåØê´Ç™Ç†ÇËÇ‹Ç∑ÅBDisposeGWorld ()ÇÕGDeviceÇà¿ëSÇ»ílÇ…ê›íËǵNjÇ∑Ç™ÅAÉ|Å[ÉgÇÕê›íËÇ≥ÇÍÇ‹ÇπÇÒÅBDZÇÃÇÊǧDžÅAóLå¯Ç»É|Å[ÉgǙǻǢèÛë‘Ç≈SetCCursor ()ÇåƒÇ—èoǵǃǵNjǧÇΔÅAGDeviceÇÕéÃǃÇÁÇÍÇΩGDeviceÇ…ê›íËÇ≥ÇÍÅAíºå„Ç…ÉRÉìÉsÉÖÅ[É^Ç™ÉNÉâÉbÉVÉÖǵNjÇ∑ÅB

DZÇÃSetCCursor ()ÇÃïõçÏópÇîÇØÇÈÇΩÇflÇ…ÇÕà»â∫ÇÃì_Ç…íçà”ǵǃâ∫Ç≥Ç¢ÅB

  • É|Å[ÉgÇΔÉfÉoÉCÉXÇ™èÌÇ…àÍívǵǃǢÇÈDZÇΔÇämîFǵǃâ∫Ç≥Ç¢ÅBÉ|Å[ÉgÇΔÉfÉoÉCÉXÇ™àÍívǵǃǢǻǢÇΔÉJÉâÅ[ÉJÅ[É\ÉãÇ…ä÷Ç∑ÇÈólÅXÇ»ñ‚ëËÇ™î≠ê∂ǵNjÇ∑ÅB
  • åªç›égÇÌÇÍǃǢÇÈÉ|Å[ÉgÇÕê‚ëŒÇ…éÃǃǻǢÇ≈â∫Ç≥Ç¢ÅBïKÇ∏óLå¯Ç»É|Å[ÉgÇ…êÿÇËë÷ǶǃǩÇÁÅAåªç›ÇÃÉ|Å[ÉgÇéÃǃǃâ∫Ç≥Ç¢ÅBéÃǃÇÁÇÍÇΩÉ|Å[ÉgÇ‚ÉfÉoÉCÉXÇ…ï`âÊÇÇ∑ÇÈÇΔÅAÇŸÇΔÇÒÇ«ÇÃèÍçáÇÕÉNÉâÉbÉVÉÖÇà¯Ç´ãNDZÇ∑DZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB

äÑÇËçûÇ›éûÇ…SetCCursor ()ÇåƒÇ—èoÇ≥ǻǢ

SetCCursor ()ÇÕÉÅÉÇÉäÇìÆÇ©Ç∑DZÇΔǙdžÇËÇ‹Ç∑ÅBì¡Ç…ÅAÉVÉXÉeÉÄÉ\ÉtÉgÉEÉFÉAÉoÅ[ÉWÉáÉì7.5.2à»ç~Ç≈ÇÕSetCCursor ()ÇÕCopyBits ()ǻǫÇÃQuickDrawä÷êîÇëΩÇ≠åƒÇ—èoǵNjÇ∑ÅBäÑÇËçûÇ›éûÇÕê‚ëŒÇ…SetCCursor ()ÇåƒÇ—èoÇ≥ǻǢÇ≈â∫Ç≥Ç¢ÅIÇΩÇæÇµÅAäÑÇËçûÇ›éûÇ…îíçïÇÃSetCursor ()ÇåƒÇ—èoÇ∑DZÇΔÇÕç\ǢNjÇπÇÒÅB

éQçlï∂å£